import { getDepartments } from '@/api/departments'
/**
 * Created by PanJiaChen on 16/11/18.
 */

/**
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}

// !高阶函数：返回值是函数的函数 或者 参数是函数的函数
export function checkRepeat(key, _this) {
  return async(_, value, callback) => {
    let allDepts = await getDepartments()
    // 如果有 ID，说明是编辑
    if (_this.formData.id) {
      // !编辑的规则是：除了自己，不能和其他的一样
      allDepts = allDepts.filter(item => item.id !== _this.formData.id)
    } else {
      // 如果找当前点击的这一行的儿子？
      // 谁的 pid 等于我当前点击的这一行的 ID，谁就是我的儿子
      if (key === 'name') {
        allDepts = allDepts.filter(item => item.pid === _this.currentNodeId)
      }
    }
    // 支持编辑，除了自己，不能和其他的一样
    const isRepeat = allDepts.some((item) => item[key] === value)
    isRepeat ? callback(new Error(`已经存在重复的${value}`)) : callback()
  }
}
